/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package GUIaVykreslovanie;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.util.HashSet;
import java.util.Set;
import javax.swing.JComponent;
import javax.swing.JLabel;

/**
 *  Komponent používateľského grafického rozhrania, v ktorom sa zobrazujú kolízie 
 *  rozvrhu s pravidlami rozvrhovania
 * @author MartinaHlinková
 */
public class OknoChyb extends JComponent{
    private HashSet<String> chyby;
    
    /**
     * Konštruktor triedy OknoChyb, v ktorom nie je zobrazená ani jedna kolízia rozvrhovania
     */
    public OknoChyb(){
        this.chyby = new HashSet<String>();
    }
    
    /**
     *  Konštruktor triedy OknoChyb, v ktorom sú zobrazené kolízie rozvrhovania. Tieto
     *  kolízie sú v množine (Set) textových reťazcov (String).
     * @param chyby     množina textových reťazcov popisujúcich kolízie rozvrhovania
     */
    public OknoChyb(Set<String> chyby){
        this.chyby = new HashSet<String>();
        this.chyby.addAll(chyby);
    }
    
    /**
     * Metóda, ktorá pridáva textové reťazce popisujúce kolízie do komponentu OknoChyb
     * 
     * @param chyby množina textových reťazcov kolízií rozvrhovania, ktoré za majú pridať
     * @return true, ak bolo možné pridať kolízie, inak false
     */
    public boolean pridajChyby(HashSet<String> chyby){
        return this.chyby.addAll(chyby);
    }
    
    /**
     * Metóda nastavujúca množinu texových reťazcov popisujúcich kolízie rozvrhovania
     * 
     * @param chyby množina textových reťazcov, ktoré sa majú nastaviť
     */
    public void setChyby(HashSet<String> chyby){
        this.chyby = chyby;
    }
    
    @Override
    /**
     * Metóda vykreslujúca správy popisujúce kolízie rozvrhovania
     */
    public void paintComponent(Graphics g){
        int fontVyska = this.getFontMetrics(this.getFont()).getHeight()+2;
        int vyska = this.chyby.size()*(fontVyska);
        int sirka = this.getWidth();
        this.setPreferredSize(new Dimension(sirka, vyska));
        
        int i = 1;
        Graphics2D gg = (Graphics2D) (g);
        gg.setColor(Color.BLACK);
        for(String vypis: this.chyby){
            gg.drawString(vypis, 2,fontVyska*i);
            i++;
        }
    }
    
    /**
     * Metóda, ktorá nastaví novú množinu textových reťazcov popisujúcich kolízie
     * rozvrhovania a nanovo ich vykreslí.
     * 
     * @param chyby množina textových reťazcov popisujúcich kolízie
     * rozvrhovania, ktoré sa majú nastaciť a vykrestiť
     */
    public void vypisChyby(HashSet<String>chyby){
        this.setChyby(chyby);
        this.repaint();
    }
    
}
